//******************************
// 解析命令 xshell 与 服务器
// 一个进程控制另一个进程
// ****************************
#include "comm.h"

int main()
{
  umask(0);
  if(-1 == mkfifo(FIFO_FILE, 0644)){
    perror("mkfifo");
    return 1;
  }
  int fd = open(FIFO_FILE, O_RDONLY);
  if(fd < 0){
    perror("open error");
    return 2;
  }
  //else if(fd >= 0){
    char buf[64];//读的缓冲区
    while(1){
      buf[0]=0;//字符串清空
      ssize_t s = read(fd, buf, sizeof(buf)-1);//sizeof(buf)-1是期望读取多少内容
      if(s > 0){//success read 
        buf[s] = 0;//最后添加结束标志
        printf("client# %s\n", buf);
        if(fork() == 0){ //解析命令
          //child 子进程去执行命令 
          execlp(buf, buf, NULL);
          exit(1);
        }
        waitpid(-1, NULL, 0);
      }
      else if(0 == s){//对方关闭
        printf("client quit, me quit  too\n");//文件关闭了
        break;
      }
      else{
        perror("read error");
        break;
      }
    }
  //}
  close (fd);
  return 0;
}
